package org.ybxb.report.vo;

import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;

/**
 * 解决方案详情
 */
public class SolutionDetailVo implements Serializable {

  /**
   * 基础信息
   */
  private static final long serialVersionUID = 1L;
  /**
   * 主键
   */
  private Long id;

  /**
   * 名称
   */
  private String name;

  /**
   * 所属行业;（字典：SOLUTION_INDUSTRY） 1政务服务 2建筑地产 3卫生建康 4KA要客 5金融服务 6智能制造
   */
  private Integer industry;

  /**
   * 版本号
   */
  private String version;

  /**
   * logo;附件ID
   */
  private String logo;

  /**
   * 状态（字典编码SOLUTION_STATUS）;0 草稿；1 待审核；2 审核通过；3 已驳回；4 已下架；
   */
  private Integer status;

  /**
   * 环节（字典编码SOLUTION_NODE）1 解决方案创建；2 信息修改;
   */
  private Integer node;

  /**
   * 导航背景图
   */
  private String navigationLogo;

  /**
   * 方案描述
   */
  private String description;

  /**
   * 方案背景
   */
  private String backdrop;

  /**
   * 标签
   */
  private List<String> tagList;


  /**
   * 技术支持联系电话
   */
  private String technicalPhone;

  /**
   * 技术支持邮箱
   */
  private String technicalMail;
  /**
   * 默认支撑信息 主要含用户信息 比如部门名称等
   */
  // 部门名称
  private String deptName;

  /**
   * 部门编号
   */
  private String deptCode;

  /**
   * 来源平台 4 运营 5 合作
   */
  private Integer platform;

  /**
   * 租户id
   */
  private Long tenantId;



  /**
   * 预览地址
   */
  private String previewUrl;

  /**
   * 预览用户名
   */
  private String previewUsername;

  /**
   * 预览密码
   */
  private String previewPassword;

  /**
   * 创建时间
   */
  @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
  @JsonSerialize(using = LocalDateTimeSerializer.class)
  @JsonDeserialize(using = LocalDateTimeDeserializer.class)
  private LocalDateTime createTime;

  /**
   * 更新时间
   */
  @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
  @JsonSerialize(using = LocalDateTimeSerializer.class)
  @JsonDeserialize(using = LocalDateTimeDeserializer.class)
  private LocalDateTime updateTime;

  /**
   * 创建人
   */
  private String createBy;

  /**
   * 更新人
   */
  private String updateBy;

  /**
   * 项目id
   */
  private Long systemId;

  /**
   * 基座类型
   */
  private Integer baseType;

  /**
   * 基座版本
   */
  private String baseVersion;

  /**
   * 预览状态 0 未开启 1已开启
   */
  private Integer previewStatus;

  /**
   * 源成果id
   */
  private Long originSolutionId;

  /**
   * 技术联系人id
   */
  private String technicalPersonId;

  /**
   * 技术联系人
   */
  private String technicalPerson;

  /**
   * 成果类型 SOLUTION_TYPE 0 清单内成果 1 非清单成果
   */
  private Integer type;

  /**
   * 所属清单类型 EXT_ACHIEVE_LIST_TYPE 1 研发成果清单 2 全量研发成果目录
   */
  private Integer belongListType;

  /**
   * 成果编码
   */
  private String code;

  /**
   * 成果归属单位（部门）
   */
  private String belongCompanyId;

  /**
   * 成果归属单位
   */
  private String belongCompany;

  /**
   * 负责人id
   */
  private String directorId;

  /**
   * 负责人
   */
  private String director;

  /**
   * 负责人电话
   */
  private String directorPhone;

  /**
   * 负责人邮箱
   */
  private String directorEmail;


  public Long getId() {
    return id;
  }

  public SolutionDetailVo setId(Long id) {
    this.id = id;
    return this;
  }

  public String getName() {
    return name;
  }

  public SolutionDetailVo setName(String name) {
    this.name = name;
    return this;
  }

  public Integer getIndustry() {
    return industry;
  }

  public SolutionDetailVo setIndustry(Integer industry) {
    this.industry = industry;
    return this;
  }

  public String getVersion() {
    return version;
  }

  public SolutionDetailVo setVersion(String version) {
    this.version = version;
    return this;
  }

  public String getLogo() {
    return logo;
  }

  public SolutionDetailVo setLogo(String logo) {
    this.logo = logo;
    return this;
  }

  public Integer getStatus() {
    return status;
  }

  public SolutionDetailVo setStatus(Integer status) {
    this.status = status;
    return this;
  }

  public Integer getNode() {
    return node;
  }

  public SolutionDetailVo setNode(Integer node) {
    this.node = node;
    return this;
  }

  public String getNavigationLogo() {
    return navigationLogo;
  }

  public SolutionDetailVo setNavigationLogo(String navigationLogo) {
    this.navigationLogo = navigationLogo;
    return this;
  }

  public String getDescription() {
    return description;
  }

  public SolutionDetailVo setDescription(String description) {
    this.description = description;
    return this;
  }

  public String getBackdrop() {
    return backdrop;
  }

  public SolutionDetailVo setBackdrop(String backdrop) {
    this.backdrop = backdrop;
    return this;
  }

  public List<String> getTagList() {
    return tagList;
  }

  public SolutionDetailVo setTagList(List<String> tagList) {
    this.tagList = tagList;
    return this;
  }

  public String getTechnicalPhone() {
    return technicalPhone;
  }

  public SolutionDetailVo setTechnicalPhone(String technicalPhone) {
    this.technicalPhone = technicalPhone;
    return this;
  }

  public String getTechnicalMail() {
    return technicalMail;
  }

  public SolutionDetailVo setTechnicalMail(String technicalMail) {
    this.technicalMail = technicalMail;
    return this;
  }

  public String getDeptName() {
    return deptName;
  }

  public SolutionDetailVo setDeptName(String deptName) {
    this.deptName = deptName;
    return this;
  }

  public String getDeptCode() {
    return deptCode;
  }

  public SolutionDetailVo setDeptCode(String deptCode) {
    this.deptCode = deptCode;
    return this;
  }

  public Integer getPlatform() {
    return platform;
  }

  public SolutionDetailVo setPlatform(Integer platform) {
    this.platform = platform;
    return this;
  }

  public Long getTenantId() {
    return tenantId;
  }

  public SolutionDetailVo setTenantId(Long tenantId) {
    this.tenantId = tenantId;
    return this;
  }

  public String getPreviewUrl() {
    return previewUrl;
  }

  public SolutionDetailVo setPreviewUrl(String previewUrl) {
    this.previewUrl = previewUrl;
    return this;
  }

  public String getPreviewUsername() {
    return previewUsername;
  }

  public SolutionDetailVo setPreviewUsername(String previewUsername) {
    this.previewUsername = previewUsername;
    return this;
  }

  public String getPreviewPassword() {
    return previewPassword;
  }

  public SolutionDetailVo setPreviewPassword(String previewPassword) {
    this.previewPassword = previewPassword;
    return this;
  }

  public LocalDateTime getCreateTime() {
    return createTime;
  }

  public SolutionDetailVo setCreateTime(LocalDateTime createTime) {
    this.createTime = createTime;
    return this;
  }

  public LocalDateTime getUpdateTime() {
    return updateTime;
  }

  public SolutionDetailVo setUpdateTime(LocalDateTime updateTime) {
    this.updateTime = updateTime;
    return this;
  }

  public String getCreateBy() {
    return createBy;
  }

  public SolutionDetailVo setCreateBy(String createBy) {
    this.createBy = createBy;
    return this;
  }

  public String getUpdateBy() {
    return updateBy;
  }

  public SolutionDetailVo setUpdateBy(String updateBy) {
    this.updateBy = updateBy;
    return this;
  }

  public Long getSystemId() {
    return systemId;
  }

  public SolutionDetailVo setSystemId(Long systemId) {
    this.systemId = systemId;
    return this;
  }

  public Integer getBaseType() {
    return baseType;
  }

  public SolutionDetailVo setBaseType(Integer baseType) {
    this.baseType = baseType;
    return this;
  }

  public String getBaseVersion() {
    return baseVersion;
  }

  public SolutionDetailVo setBaseVersion(String baseVersion) {
    this.baseVersion = baseVersion;
    return this;
  }

  public Integer getPreviewStatus() {
    return previewStatus;
  }

  public SolutionDetailVo setPreviewStatus(Integer previewStatus) {
    this.previewStatus = previewStatus;
    return this;
  }

  public Long getOriginSolutionId() {
    return originSolutionId;
  }

  public SolutionDetailVo setOriginSolutionId(Long originSolutionId) {
    this.originSolutionId = originSolutionId;
    return this;
  }

  public String getTechnicalPersonId() {
    return technicalPersonId;
  }

  public SolutionDetailVo setTechnicalPersonId(String technicalPersonId) {
    this.technicalPersonId = technicalPersonId;
    return this;
  }

  public String getTechnicalPerson() {
    return technicalPerson;
  }

  public SolutionDetailVo setTechnicalPerson(String technicalPerson) {
    this.technicalPerson = technicalPerson;
    return this;
  }

  public Integer getType() {
    return type;
  }

  public SolutionDetailVo setType(Integer type) {
    this.type = type;
    return this;
  }

  public Integer getBelongListType() {
    return belongListType;
  }

  public SolutionDetailVo setBelongListType(Integer belongListType) {
    this.belongListType = belongListType;
    return this;
  }

  public String getCode() {
    return code;
  }

  public SolutionDetailVo setCode(String code) {
    this.code = code;
    return this;
  }

  public String getBelongCompanyId() {
    return belongCompanyId;
  }

  public SolutionDetailVo setBelongCompanyId(String belongCompanyId) {
    this.belongCompanyId = belongCompanyId;
    return this;
  }

  public String getBelongCompany() {
    return belongCompany;
  }

  public SolutionDetailVo setBelongCompany(String belongCompany) {
    this.belongCompany = belongCompany;
    return this;
  }

  public String getDirectorId() {
    return directorId;
  }

  public SolutionDetailVo setDirectorId(String directorId) {
    this.directorId = directorId;
    return this;
  }

  public String getDirector() {
    return director;
  }

  public SolutionDetailVo setDirector(String director) {
    this.director = director;
    return this;
  }

  public String getDirectorPhone() {
    return directorPhone;
  }

  public SolutionDetailVo setDirectorPhone(String directorPhone) {
    this.directorPhone = directorPhone;
    return this;
  }

  public String getDirectorEmail() {
    return directorEmail;
  }

  public SolutionDetailVo setDirectorEmail(String directorEmail) {
    this.directorEmail = directorEmail;
    return this;
  }


  @Override
  public String toString() {
    return "SolutionDetailVo{" + "id=" + id + ", name='" + name + '\'' + ", industry=" + industry + ", version='"
        + version + '\'' + ", logo='" + logo + '\'' + ", status=" + status + ", node=" + node + ", navigationLogo='"
        + navigationLogo + '\'' + ", description='" + description + '\'' + ", backdrop='" + backdrop + '\''
        + ", tagList=" + tagList + ", technicalPhone='" + technicalPhone + '\'' + ", technicalMail='" + technicalMail
        + '\'' + ", deptName='" + deptName + '\'' + ", deptCode='" + deptCode + '\'' + ", platform=" + platform
        + ", tenantId=" + tenantId + ", previewUrl='" + previewUrl + '\'' + ", previewUsername='" + previewUsername
        + '\'' + ", previewPassword='" + previewPassword + '\'' + ", createTime=" + createTime + ", updateTime="
        + updateTime + ", createBy='" + createBy + '\'' + ", updateBy='" + updateBy + '\'' + ", systemId=" + systemId
        + ", baseType=" + baseType + ", baseVersion='" + baseVersion + '\'' + ", previewStatus=" + previewStatus
        + ", originSolutionId=" + originSolutionId + ", technicalPersonId='" + technicalPersonId + '\''
        + ", technicalPerson='" + technicalPerson + '\'' + ", type=" + type + ", belongListType=" + belongListType
        + ", code='" + code + '\'' + ", belongCompanyId='" + belongCompanyId + '\'' + ", belongCompany='"
        + belongCompany + '\'' + ", directorId='" + directorId + '\'' + ", director='" + director + '\''
        + ", directorPhone='" + directorPhone + '\'' + ", directorEmail='" + directorEmail + '\'' + '}';
  }
}
